/*
 *  Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 *  This source code is licensed under the MIT license found in the LICENSE
 *  file in the root directory of this source tree.
 *
 */

/*
 *  THIS FILE IS AUTOGENERATED. DO NOT MODIFY IT; ALL CHANGES WILL BE LOST IN
 *  VAIN.
 *
 *  @generated
 */
#pragma once

#include <memory>
#include <string>
#include <utility>

#include <folly/Optional.h>
#include <folly/io/IOBuf.h>
#include <mcrouter/lib/carbon/CarbonProtocolReader.h>
#include <mcrouter/lib/carbon/CommonSerializationTraits.h>
#include <mcrouter/lib/carbon/Keys.h>
#include <mcrouter/lib/carbon/ReplyCommon.h>
#include <mcrouter/lib/carbon/RequestCommon.h>
#include <mcrouter/lib/carbon/RequestReplyUtil.h>
#include <mcrouter/lib/carbon/Result.h>
#include <mcrouter/lib/carbon/TypeList.h>
#include <mcrouter/lib/carbon/Variant.h>

#include "mcrouter/lib/network/gen/gen-cpp2/Common_types.h"

namespace facebook {
namespace memcache {

class McVersionReply;

class McVersionRequest : public carbon::RequestCommon, public facebook::memcache::thrift::McVersionRequest {
 public:
  using reply_type = McVersionReply;

  static constexpr size_t typeId = 25;
  static constexpr const char* name = "version";

  McVersionRequest() = default;
  McVersionRequest(const McVersionRequest&) = default;
  McVersionRequest& operator=(const McVersionRequest&) = default;
  McVersionRequest(McVersionRequest&&) = default;
  McVersionRequest& operator=(McVersionRequest&&) = default;
  explicit McVersionRequest(folly::StringPiece sp) {
    key_ref() = sp;
  }
  explicit McVersionRequest(folly::IOBuf&& carbonKey) {
    key_ref() = std::move(carbonKey);
  }

  friend class apache::thrift::Cpp2Ops<McVersionRequest>;

};

class McVersionReply : public carbon::ReplyCommon, public facebook::memcache::thrift::McVersionReply {
 public:

  static constexpr size_t typeId = 26;

  McVersionReply() = default;
  McVersionReply(const McVersionReply&) = default;
  McVersionReply& operator=(const McVersionReply&) = default;
  McVersionReply(McVersionReply&&) = default;
  McVersionReply& operator=(McVersionReply&&) = default;
  explicit McVersionReply(carbon::Result carbonResult) {
    result_ref() = carbonResult;
  }

  friend class apache::thrift::Cpp2Ops<McVersionReply>;

};

class McStatsReply;

class McStatsRequest : public carbon::RequestCommon, public facebook::memcache::thrift::McStatsRequest {
 public:
  using reply_type = McStatsReply;

  static constexpr size_t typeId = 33;
  static constexpr const char* name = "stats";

  McStatsRequest() = default;
  McStatsRequest(const McStatsRequest&) = default;
  McStatsRequest& operator=(const McStatsRequest&) = default;
  McStatsRequest(McStatsRequest&&) = default;
  McStatsRequest& operator=(McStatsRequest&&) = default;
  explicit McStatsRequest(folly::StringPiece sp) {
    key_ref() = sp;
  }
  explicit McStatsRequest(folly::IOBuf&& carbonKey) {
    key_ref() = std::move(carbonKey);
  }

  friend class apache::thrift::Cpp2Ops<McStatsRequest>;

};

class McStatsReply : public carbon::ReplyCommon, public facebook::memcache::thrift::McStatsReply {
 public:

  static constexpr size_t typeId = 34;

  McStatsReply() = default;
  McStatsReply(const McStatsReply&) = default;
  McStatsReply& operator=(const McStatsReply&) = default;
  McStatsReply(McStatsReply&&) = default;
  McStatsReply& operator=(McStatsReply&&) = default;
  explicit McStatsReply(carbon::Result carbonResult) {
    result_ref() = carbonResult;
  }

  friend class apache::thrift::Cpp2Ops<McStatsReply>;

};

class McShutdownReply;

class McShutdownRequest : public carbon::RequestCommon, public facebook::memcache::thrift::McShutdownRequest {
 public:
  using reply_type = McShutdownReply;

  static constexpr size_t typeId = 35;
  static constexpr const char* name = "shutdown";

  McShutdownRequest() = default;
  McShutdownRequest(const McShutdownRequest&) = default;
  McShutdownRequest& operator=(const McShutdownRequest&) = default;
  McShutdownRequest(McShutdownRequest&&) = default;
  McShutdownRequest& operator=(McShutdownRequest&&) = default;
  explicit McShutdownRequest(folly::StringPiece sp) {
    key_ref() = sp;
  }
  explicit McShutdownRequest(folly::IOBuf&& carbonKey) {
    key_ref() = std::move(carbonKey);
  }

  friend class apache::thrift::Cpp2Ops<McShutdownRequest>;

};

class McShutdownReply : public carbon::ReplyCommon, public facebook::memcache::thrift::McShutdownReply {
 public:

  static constexpr size_t typeId = 36;

  McShutdownReply() = default;
  McShutdownReply(const McShutdownReply&) = default;
  McShutdownReply& operator=(const McShutdownReply&) = default;
  McShutdownReply(McShutdownReply&&) = default;
  McShutdownReply& operator=(McShutdownReply&&) = default;
  explicit McShutdownReply(carbon::Result carbonResult) {
    result_ref() = carbonResult;
  }

  friend class apache::thrift::Cpp2Ops<McShutdownReply>;

};

class McQuitReply;

class McQuitRequest : public carbon::RequestCommon, public facebook::memcache::thrift::McQuitRequest {
 public:
  using reply_type = McQuitReply;

  static constexpr size_t typeId = 37;
  static constexpr const char* name = "quit";

  McQuitRequest() = default;
  McQuitRequest(const McQuitRequest&) = default;
  McQuitRequest& operator=(const McQuitRequest&) = default;
  McQuitRequest(McQuitRequest&&) = default;
  McQuitRequest& operator=(McQuitRequest&&) = default;
  explicit McQuitRequest(folly::StringPiece sp) {
    key_ref() = sp;
  }
  explicit McQuitRequest(folly::IOBuf&& carbonKey) {
    key_ref() = std::move(carbonKey);
  }

  friend class apache::thrift::Cpp2Ops<McQuitRequest>;

};

class McQuitReply : public carbon::ReplyCommon, public facebook::memcache::thrift::McQuitReply {
 public:

  static constexpr size_t typeId = 38;

  McQuitReply() = default;
  McQuitReply(const McQuitReply&) = default;
  McQuitReply& operator=(const McQuitReply&) = default;
  McQuitReply(McQuitReply&&) = default;
  McQuitReply& operator=(McQuitReply&&) = default;
  explicit McQuitReply(carbon::Result carbonResult) {
    result_ref() = carbonResult;
  }

  friend class apache::thrift::Cpp2Ops<McQuitReply>;

};

class McExecReply;

class McExecRequest : public carbon::RequestCommon, public facebook::memcache::thrift::McExecRequest {
 public:
  using reply_type = McExecReply;

  static constexpr size_t typeId = 39;
  static constexpr const char* name = "exec";

  McExecRequest() = default;
  McExecRequest(const McExecRequest&) = default;
  McExecRequest& operator=(const McExecRequest&) = default;
  McExecRequest(McExecRequest&&) = default;
  McExecRequest& operator=(McExecRequest&&) = default;
  explicit McExecRequest(folly::StringPiece sp) {
    key_ref() = sp;
  }
  explicit McExecRequest(folly::IOBuf&& carbonKey) {
    key_ref() = std::move(carbonKey);
  }

  friend class apache::thrift::Cpp2Ops<McExecRequest>;

};

class McExecReply : public carbon::ReplyCommon, public facebook::memcache::thrift::McExecReply {
 public:

  static constexpr size_t typeId = 40;

  McExecReply() = default;
  McExecReply(const McExecReply&) = default;
  McExecReply& operator=(const McExecReply&) = default;
  McExecReply(McExecReply&&) = default;
  McExecReply& operator=(McExecReply&&) = default;
  explicit McExecReply(carbon::Result carbonResult) {
    result_ref() = carbonResult;
  }

  friend class apache::thrift::Cpp2Ops<McExecReply>;

};

class GoAwayRequest;

class GoAwayAcknowledgement : public carbon::RequestCommon, public facebook::memcache::thrift::GoAwayAcknowledgement {
 public:
  using reply_type = GoAwayRequest;

  static constexpr size_t typeId = 41;
  static constexpr const char* name = "goaway";

  GoAwayAcknowledgement() = default;
  GoAwayAcknowledgement(const GoAwayAcknowledgement&) = default;
  GoAwayAcknowledgement& operator=(const GoAwayAcknowledgement&) = default;
  GoAwayAcknowledgement(GoAwayAcknowledgement&&) = default;
  GoAwayAcknowledgement& operator=(GoAwayAcknowledgement&&) = default;

  friend class apache::thrift::Cpp2Ops<GoAwayAcknowledgement>;

};

class GoAwayRequest : public carbon::ReplyCommon, public facebook::memcache::thrift::GoAwayRequest {
 public:

  static constexpr size_t typeId = 42;

  GoAwayRequest() = default;
  GoAwayRequest(const GoAwayRequest&) = default;
  GoAwayRequest& operator=(const GoAwayRequest&) = default;
  GoAwayRequest(GoAwayRequest&&) = default;
  GoAwayRequest& operator=(GoAwayRequest&&) = default;
  explicit GoAwayRequest(carbon::Result carbonResult) {
    result_ref() = carbonResult;
  }

  friend class apache::thrift::Cpp2Ops<GoAwayRequest>;

};
} // namespace memcache
} // namespace facebook

#include "CommonMessages-inl.h"
